package day_09;

public class StudentTest {
    public static void main(String[] args) {
        //创建数组
        Student[] arr = new Student[3];
        //创建对象
        Student s1 = new Student(001, "zhangsan", 10);
        Student s2 = new Student(002, "lisi", 11);
        Student s3 = new Student(003, "wangwu", 12);
        //给数组赋值
        arr[0] = s1;
        arr[1] = s2;
        arr[2] = s3;
        //要求1：再次添加一个学生对象，并判断学号唯一性
        Student s4 = new Student(004, "zhaoliu", 13);

        //唯一性判断
        //不存在才添加
        boolean flag = contains(arr, s4.getId());

        if (!flag) {
            //判断数组是否已满
            int count = count(arr);
            //已存满
            if (count == arr.length) {
                //创建一个新数组，长度是旧数组长度加一
                Student[] newarr = newArr(arr);
                //赋值
                newarr[count] = s4;
                //要求2：遍历信息
                printarr(newarr);
                //要求3：通过id删除信息
                //先找到这个信息，返回它的位置索引
                int k = check(newarr, 2);
                System.out.println(k);
                if (k >= 0) {
                    //说明存在
                    newarr[k] = null;
                    System.out.println("删除成功");
                    //要求4：删除完毕，遍历信息
                    printarr(newarr);
                }
                else {
                    //说明不存在
                    System.out.println("删除失败");
                }
            }
        //没有存满
        else {
            //返回的count实际就是该添加的数组下标
            arr[count] = s4;
            //要求2：遍历信息
            printarr(arr);
            //要求3：通过id删除信息
            //先找到这个信息，返回它的位置索引
            int k = check(arr, 2);
                System.out.println(k);
            if (k >= 0) {
                //说明存在
                arr[k] = null;
                System.out.println("删除成功");
                //要求4：删除完毕，遍历信息
                printarr(arr);
            }
            else {
                //说明不存在
                System.out.println("删除失败");
            }
        }
    }
        else{
            System.out.println("学号已存在");
        }


}

    //通过学号查询信息
    public static int check(Student[] arr,int id){
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]!=null){
                if(arr[i].getId()==id){
                    return i;
                }
            }
        }
        return -1;
    }
    //遍历打印信息
    public static void printarr(Student[] arr){
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]!=null){
                System.out.println(arr[i].getId()+","+arr[i].getName()+","+arr[i].getAge());
            }
        }
    }
    //创建新数组
    public static Student[] newArr(Student[] arr){
        //创建一个新数组，长度是旧数组长度加一
        Student[] newarr=new Student[arr.length+1];
        //复制旧数组
        for (int i = 0; i < arr.length; i++) {
            newarr[i]=arr[i];
        }
        return newarr;

    }
    //统计数组中的元素
    public static int count(Student[] arr){
        int count=0;
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]!=null){
                count++;
            }
        }
        return count;
    }
    //判断学号的唯一性
    public static boolean contains(Student[] arr,int id){
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]!=null){
                int sid=arr[i].getId();
                if(sid==id){
                    return true;
                }
            }

        }
        return false;
    }
}
